"""
1. 类里面要实现 __iter__ 方法，此函数返回的对象必须实现 __next__ 方法
2. 每次运行 __next__ 方法，将返回一个对象，
   当没有对象可供返回时，抛出StopIteration异常。

"""
class I:

    def __init__(self, data):
        self.data = data

    def __iter__(self):
        return self

    def __next__(self):
        try:
            return self.data.pop(0)
        except IndexError:
            raise StopIteration


if __name__ == '__main__':
    i = I([1, 3, 2, 7, 8])
    for x in i:
        print(x)
